package Servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet permettant de traiter le changement des attributs
 * @author Nouriel AZRIA
 * @version 1.0.0
 */
@WebServlet(name = "ServletChangerParam", urlPatterns = {"/ServletChangerParam"})
public class ServletChangerParam extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        // Pratique pour décider de l'action à faire   
        String action = request.getParameter("action");  
        String forwardTo = "";  
        //String message = "";
        
        // --- Verifier que l'action existe
        if(action != null){
            
            // --- Traiter le cas d'initialisation des parametres
            if(action.equals("initisalierParams")){
                
                response.addCookie(new Cookie("indexDivConnexionAffiche", "true"));

            }
            
            // --- Traiter le cas de changement de parametre
            if(action.equals("modifierParam")){

                // Recuperer les informations de la demande
                String nomParam = request.getParameter("nomParametre");  
                String valeurParam = request.getParameter("valeurParametre"); 

                // Verifier que le parametre existe deja
                if(request.getParameter(nomParam) != null)
                    // Modifier la valeur du parametre
                    request.setAttribute(nomParam, valeurParam);
                
                // Verifier s'il s'agit d'un attribut
                else {

                    // Verifier que le parametre existe deja
                    if(request.getAttribute(nomParam) != null)
                        // Modifier la valeur du parametre
                        request.setAttribute(nomParam, valeurParam);

                    // Verifier s'il s'agit d'un cookie
                    else {
                        
                        // Recuperer les cookies
                        Cookie[] listC = request.getCookies();
                        
                        // Chercher le cookie souhaite parmis la liste
                        for(Cookie c : listC)
                            // Modifier le bon cookie s'il correspond
                            if(c.getName().equals(nomParam)){
                                c.setValue(valeurParam);
                                response.addCookie(c);
                            }

                    }
                    
                }

            }
            
            // Passer a la page suivante
            forwardTo = "index.jsp?action=todo";
            RequestDispatcher dp = request.getRequestDispatcher(forwardTo);  
            dp.forward(request, response); 
        
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
